#ifndef BASE_ENTITY
#define BASE_ENTITY

#include <string>

#include "Types/AITypes.h"

struct Message;

class BaseEntity
{
private:
	AITypes::EntityID m_id;
	static AITypes::EntityID m_nextValidId;

public:
	BaseEntity()
	{
		m_id = m_nextValidId;
		m_nextValidId++;
	}

	virtual ~BaseEntity()
	{}
	
	virtual void Update() = 0;
	virtual bool HandleMessage(const Message& message) = 0;
	virtual std::string GetEnityName() = 0;

	AITypes::EntityID ID() const { return m_id; }
};

#endif